import ordinal from 'ordinal';

export default {
    local: 'en',
    name: 'English',
    common: {
        action: {
            addIdentifier: 'add identifier',
            getSoftware: 'fetch video data',
            getUserProfile: 'fetch user data',
            getVideoModel: 'fetch video data',
            setUserProfile: 'modify user data',
            setVideoModel: 'modify video data',
            uploadFile: 'upload file',
            videoQuery: 'fetch video data',
        },
        button: {
            cancel: 'Cancel',
            confirm: 'Confirm',
            register: 'Register',
            send: 'Send',
        },
        filter: 'Filter',
        hide: 'Hide',
        level: {
            b: 'Beginner',
            i: 'Intermediate',
            e: 'Expert',
            sum: 'Sum',
            shortb: 'Beg',
            shorti: 'Int',
            shorte: 'Exp',
        },
        mode: {
            code00: 'Standard',
            code05: 'No Guessing',
            code11: 'Recursive Chord',
            code12: 'No Flag',
            std: 'Standard',
            nf: 'No Flag',
            ng: 'No Guessing',
            dg: 'Recursive Chord',
            sng: 'Strict No Guessing',
        },
        msg: {
            actionFail: 'Failed to {0}',
            actionSuccess: 'Succeed to {0}',
            agreeTAC: 'Please agree to Terms and Conditions!',
            connectionFail: 'Connection Fails!',
            contactDeveloper: 'Please contact the developers.',
            fileTooLarge: 'Maximum file size is {0}',
            logoutFail: 'Failed to log out!',
            logoutSuccess: 'Log out success!',
            realNameRequired: 'Real name required',
            unknownError: 'An unknown error has occurred.',
        },
        prop: {
            action: 'Action',
            identifier: 'Identifier',
            end_time: 'End Time',
            fileName: 'File Name',
            file_size: 'File Size',
            is: 'Island',
            isl: 'Island',
            level: 'Level',
            mastery: 'Mastery',
            mode: 'Mode',
            op: 'Opening',
            realName: 'Real Name',
            sex: 'Sex',
            software: 'Software',
            state: 'State', // video attribute
            status: 'Status',
            time: 'Time',
            timems: 'Time',
            update_time: 'Update Time',
            upload_time: 'Upload Time',
            winstreak: 'Win Streak',
        },
        punct: {
            colon: ': ',
            lparen: ' (',
            rparen: ')',
        },
        ratelimit: {
            oncePerHour: 'once per hour',
            oncePerMinute: 'once per minute',
        },
        response: {
            OK: '',
            BadRequest: 'Unrecognised request',
            Forbidden: 'Permission denied',
            InternalServerError: 'Internal server error',
            NotFound: 'Data not found',
            PayloadTooLarge: 'Payload too large',
            TooManyRequests: 'Too many requests',
            UnsupportedMediaType: 'Unsupported file type',
        },
        score: {
            best: 'Best',
            edge: 'Edge',
            sum: 'Sum',
        },
        show: 'Show',
        software: {
            resource_download: 'Downloads',
            software_download: 'Software',
            download_link: 'Resource',
            metasweeper: 'MetaSweeper',
            metasweeper_int: '',
            metasweeper_int2: '',
            arbiter_int: '',
        },
        state: {
            a: 'Pending',
            b: 'Frozen',
            c: 'Valid',
            d: 'Identifier Mismatch',
        },
        toDo: 'TODO',
    },
    accountlink: {
        title: 'Account Links',
        addLink: 'Link New Account',
        deleteLinkMessage: 'Are you sure to unlink this account?',
        guideMsgames1: 'Find yourself on the ',
        guideMsgames2: ' ranking:',
        guideMsgames3: 'Click the link next to your name (see image above) to get to your profile (see image below). The number at the end of the url is your ID.',
        guideQQ: 'The QQ number is accessible from site moderators. Please be aware of your privacy safety.',
        guideSaolei1: 'Go to your profile page on ',
        guideSaolei2: '. The positions of the ID are shown below.',
        guideTitle: 'How to locate the ID',
        guideWom1: 'Go to your profile page on ',
        guideWom2: '. The number at the end of the url is your ID.',
        msgamesJoined: 'Joined',
        msgamesLocalName: 'Local Name',
        msgamesName: 'Name',
        platform: 'Platform',
        saoleiName: 'Name',
        saoleiTotalViews: 'Total Views',
        saoleiVideoCount: 'Video Count',
        unverified: 'Pending. Please contact the moderator.',
        unverifiedText: 'This account has not been verified. Please contact a moderator.',
        updateError: {
            cooldown: 'Cannot update twice in 12 hours',
            empty: 'Empty data',
            indexerror: 'Failed to extract data',
            timeout: 'Cannot connect to the platform',
            title: 'Update failed',
            unknown: 'Unknown error',
        },
        verified: 'Verified',
        womArenaPoint: 'Arena',
        womExperience: 'Experience',
        womLastSeason: 'Last Season',
        womMaxDifficulty: 'Max Difficulty',
        womResource: 'Resources',
        womTrophy: 'Trophies',
        womWin: 'Wins',
    },
    activityCalendar: {
        cellGap: 'Cell Gap',
        cellSize: 'Cell Size',
        cornerRadius: 'Corner Radius',
        showDate: 'Show Date',
        totalNBytes: '{0} bytes',
        totalNVideos: '{0} videos in total',
        tooltip: {
            noVideoOnDate: 'No video on {0}',
            uploadedNVideosOnDate: '{1} videos on {0}',
        },
        useEndTime: 'Display by finishing time',
        useEndTimeTooltip: 'Display by the time of finishing games when switching on, and the time of uploading when switching off. The finishing time represents the user\'s system time and can be incorrect.',
    },
    BBBvSummary: {
        bbbvInTotal: ({ linked, list }) => `${list(0)} ${linked('common.prop.bv')} in total`,
        cellHeight: 'Cell Height',
        customTemplate: 'Custom',
        settingDisplayBy: 'and display by',
        settingMax: 'Find max',
        settingMin: 'Find min',
        tooltipMode: {
            fast: 'Fast',
            fastTooltip: 'Click to play the video',
            advanced: 'Advanced',
            advancedTooltip: 'Click to show list of videos',
        },
    },
    experimentalFeature: {
        watermark: 'EXPERIMENTAL',
    },
    footer: {
        contact: 'Contact',
        donate: 'Donate',
        team: 'Team',
        links: 'Links',
        about: 'About',
    },
    form: {
        captcha: 'Captcha',
        captchaLoading: 'Loading',
        captchaLoadingFail: 'Failed',
        confirmPassword: 'Confirm password',
        email: 'Email',
        emailCode: 'Email code',
        imageCaptcha: 'Image captcha',
        password: 'Password',
        username: 'Username',
    },
    gsc: {
        title: ({ named }) => `The ${ordinal(named('order'))} Gold Sheep Cup`,
        description: {
            line1: 'Among all videos uploaded during (depending on when the server receives the file) the tournament, sum up the best 20 beginner (bv >= 10) games, 12 intermediate (bv >= 30) games and 5 expert (bv >= 100) games.',
            line2: 'The default scores are 10s for beginner, 60s for intermediate and 240s for expert, when there are not enough games uploaded.',
        },
        bbbvSummary: 'Bv Chart',
        finalResults: 'Final Results',
        howToParticipate: 'How to Participate',
        identifierGuide: {
            arbiter: {
                preparing: 'Register your tournament identifier here after the tournament begins.',
                ongoing_pre1: 'Please register your tournament identifier below. The identifier should end with ',
                ongoing_pre2: ', for example, ',
                ongoing_post1: 'Your tournament identifier is ',
                ongoing_post2: '. Arbiter videos with the identifier will be automatically added to the tournament.',
            },
            metasweeper: {
                preparing: 'After the tournament begins, a tournament token will be announced. Set the tournament token on Metasweeper and any video with that token will be automatically added to the tournament.',
                ongoing_1: 'Assign ',
                ongoing_2: ' to the tournament token on Metasweeper. Metasweeper videos with the token will be automatically added to the tournament.',
            },
        },
        realTimeScore: 'Real-Time Score',
        schedule: 'Schedule',
        summary: 'Summary',
        videos: 'Videos',
    },
    guide: {
        announcement: 'Announcements',
        other: 'Others',
        skill: 'Skills',
        tutorial: 'Tutorials',
    },
    helper: {
        identifier: {
            line_1_1: 'An identifier is a string signature attached to the video file by the player. It is referred to as "Player Identification Text" in the settings of ',
            line_1_2: ' and "Identifier" in the settings of ',
            line_1_3: '.',
            line_2_1: 'Each user can have unlimited number of identifiers, while different users cannot have the same identifier. A user can modify their identifiers at their profile page.',
            line_3_1: 'If the identifier of a video is not included by the user\'s identifier list, then the video is categorized as ',
            line_3_2: ' and ignored by News and Ranking.',
            line_4_1: 'When multiple users face an identifier collision, they can figure out a solution by themselves or contact a moderator for help. The moderator will make a decision based on the following principles:',
            line_4_2: 'Firstly, protect the right of users using their own real name in identifiers;',
            line_4_3: 'Secondly, approve the earlist claim of the identifier, where a claim refers to publishing a video with the identifier anywhere.',
            line_4_4: 'After the decision, some users may lose the identifier, which could result in scores withdrawn from Ranking.',
        },
    },
    home: {
        news: 'News',
        latestScore: 'Latest',
        reviewQueue: 'Pending',
    },
    identifierManager: {
        title: 'Minesweeper Identifiers',
        addIdentifierSuccess: 'Identifier Added',
        conflict: 'Identifier Conflict',
        delIdentifierSuccess: 'Identifier Deleted',
        processedNVideos: '{0} videos have been processed',
        ownedBy: 'The identifier is owned by user#{0}',
        notFound: 'You do not have any video of the identifier',
    },
    login: {
        agreeTAC1: 'Agree to',
        agreeTAC2: 'Terms & Conditions',
        forgetPassword: 'Forget password?',
        keepMeLoggedIn: 'Keep me logged in',
        loginConfirm: 'Log in',
        loginTitle: 'Login',
        registerConfirm: 'Register',
        registerTitle: 'Register',
        retrieveConfirm: 'Update password',
        retrieveTitle: 'Account Recovery',
    },
    menu: {
        ranking: 'Ranking',
        video: 'Videos',
        world: 'Statistics',
        guide: 'Guides',
        score: 'Scores',
        profile: 'Profile',
        welcome: 'Welcome, {0}!',
        login: 'Login',
        logout: 'Logout',
        register: 'Register',
        setting: 'Settings',
        tournament: 'Tournament',
    },
    msg: {
        actionFail: 'Action failed',
        actionSuccess: 'Action success',
        captchaFail: 'Invalid captcha. Please input again',
        captchaRefresh: 'Please input again',
        captchaRequired: 'Captcha required',
        confirmPasswordMismatch: 'Mismatches password',
        connectionFail: 'Connection failed. Please try again',
        copyToClipboardFail: 'Failed to copy.',
        copyToClipboardSuccess: 'Text copied.',
        emailCodeInvalid: 'Email code is invalid or expired',
        emailCodeRequired: 'Email code required',
        emailCollision: 'Email already exists',
        emailInvalid: 'Invalid email address',
        emailNoCollision: 'Email does not exist',
        emailRequired: 'Email required',
        emailSendFailMsg: 'Please re-enter captcha. If this happens again, please contact the developers.',
        emailSendFailTitle: 'Failed to send email',
        emailSendSuccessMsg: 'Please check your email inbox',
        emailSendSuccessTitle: 'Email is sent',
        fail: 'Failed: ',
        identifierIllegal: 'Illegal identifier',
        identifierIncorrectSuffix: 'Incorrect suffix',
        identifierOccupied: 'Identifier is occupied',
        illegalCharacter: 'Illegal character',
        passwordChanged: 'Password updated',
        passwordMinimum: 'Password requires at least 6 characters',
        passwordRequired: 'Password required',
        pleaseWait: 'Please wait',
        pleaseSeeEmail: 'Please check your email',
        registerSuccess: 'Successfully registered!',
        success: 'Success: ',
        unknownError: 'An unexpected error occurred. Please contact the developers. {0}',
        usernameCannotContainControl: 'Username cannot contain control characters',
        usernameCannotContainLineSeparator: 'Username cannot contain line separators',
        usernameCannotContainParagraphSeparator: 'Username cannot contain paragraph separators',
        usernameCannotStartOrEndWithSpace: 'Username cannot start or end with space characters',
        usernameCannotStartWithMark: 'Username cannot start with mark characters',
        usernameCollision: 'Username already exists',
        usernamePasswordInvalid: 'Invalid username or password',
        usernameRequired: 'Username required',
    },
    news: {
        breakRecordTo: ' breaks their {mode} {level} {stat} record with ',
    },
    profile: {
        changeAvatar: 'Click the image to change avatar',
        realname: 'Name: ',
        realnameInput: 'Input your real name here',
        signature: 'Bio: ',
        signatureInput: 'Input your bio here',
        change: 'Edit profile',
        confirmChange: 'Confirm',
        cancelChange: 'Cancel',
        identifier: 'My identifiers: ',
        msg: {
            avatarChange: 'Avatar change complete! {0} times left',
            avatarFormat: 'Avatar file has to be in JPG or PNG format!',
            avatarFilesize: 'Maximum file size is 50MB!',
            realnameChange: 'Real name change complete! {0} times left',
            signatureChange: 'Signature change complete! {0} times left',
        },
        profile: {
            title: 'Profile',
        },
        records: {
            title: 'Personal Records',
            modeRecord: ' mode record: ',
        },
        videos: 'All videos',
        exportJSON: 'Export as JSON',
        exportJSONTooltip: 'Raw data fetched from the server.',
        exportArbiterCSV: 'Export as CSV',
        exportArbiterCSVTooltip: 'Compatible with <span style="font-family: \'Courier New\', Courier, monospace;">stats_csv.csv</span> generated by Minesweeper Arbiter.<br/> Not supporting Leff, Reff, Deff, GZiNi and HZiNi at present.',
        upload: {
            title: 'Video Upload',
            dragOrClick1: 'Drag files here or ',
            dragOrClick2: 'click here to select',
            uploadAll: 'Upload All ({0})',
            cancelAll: 'Clear All',
            constraintNote: '*File size maximum is 5MB.',
            error: {
                collision: 'Video already exist',
                custom: 'Custom level is currently not supported',
                identifier: 'New identifier',
                fail: 'Fail',
                fileext: 'Invalid file extension',
                filename: 'File name exceeds 100 bytes',
                filesize: 'File size exceeds 5MB',
                mode: 'Unsupported game mode',
                needApprove: 'Need manual approval',
                parse: 'Cannot parse the file',
                pass: 'Pass',
                process: 'Uploading',
                upload: 'Upload fail',
            },
        },
    },
    setting: {
        appearance: 'Appearance',
        colorscheme: {
            auto: 'auto',
            dark: 'dark',
            light: 'light',
            title: 'Color scheme',
        },
        experimentalFeature: 'Experimental Features',
        languageSwitch: 'Language Switch',
        menuFontSize: 'Menu Font Size',
        menuHeight: 'Menu Height',
        menuLayout: 'Menu Layout',
        menuLayoutAbstract: 'Abstract',
        menuLayoutDefault: 'Default',
        newUserGuide: 'Get Help',
        newUserGuideTooltip: 'Get help by hovering over components',
        notificationDuration: 'Notification Duration',
        notificationDurationTooltip1: 'Duration before close. ',
        notificationDurationTooltip2: 'It will not automatically close if set 0. ',
    },
    team: {
        title: 'Team',
        owner: 'Owner',
        moderator: 'Moderators',
        software: 'Developers',
        localization: 'Localization',
        zhCn: 'Simplified Chinese',
        en: 'English',
        de: 'German',
        pl: 'Polish',
        designer: 'UI designers',
        acknowledgement: 'Acknowledgement',
    },
    tournament: {
        downloadAll: 'Download all videos',
        downloadParticipant: 'Download videos',
        endsBy: 'Ends By',
        host: 'Host',
        index: 'Index',
        management: 'Management',
        ranking: 'Ranking',
        startsFrom: 'Starts From',
        state: {
            p: 'Pending',
            r: 'Preparing',
            o: 'Ongoing',
            f: 'Finished',
            a: 'Awarded',
            c: 'Cancelled',
        },
        tournament: 'Tournament',
        undecided: 'Undecided',
    },
};
